package com.rw.coco.api.data.persistence.simple;

import com.rw.coco.api.data.model.GroupModel;
import com.rw.coco.api.data.persistence.GroupMapper;

/**
 * 简单实现SimpleGroupMapper类
 * 注意，如果实现这个类，则不保证调用原子性
 */
public abstract class SimpleGroupMapper implements GroupMapper, BaseSimpleMapper<GroupModel> {
    /**
     * 获取群组信息
     *
     * @param id 群组的ID
     */
    @Override
    public GroupModel getGroupOrPut(String id) {
        GroupModel groupModel = selectOne(id);
        if (groupModel != null) {
            return groupModel;
        }
        GroupModel defaultModel = GroupModel.getDefault(id);
        insert(defaultModel);
        return defaultModel;
    }

    /**
     * 操作群组是否进入黑名单
     *
     * @param id       群组ID
     * @param blackOff 是否黑名单
     */
    @Override
    public void blackOrWhiteGroup(String id, boolean blackOff) {
        GroupModel updateModel = new GroupModel();
        updateModel.setGroupId(id);
        updateModel.setBlackList(blackOff);
        update(updateModel);
    }

    /**
     * 操作群开关是否开启
     *
     * @param id       群组ID
     * @param switchOn 是否开启
     */
    @Override
    public void groupSwitch(String id, boolean switchOn) {
        GroupModel updateModel = new GroupModel();
        updateModel.setGroupId(id);
        updateModel.setSwitchOn(switchOn);
        update(updateModel);
    }

    /**
     * 操作群旁观开关
     *
     * @param id       群组ID
     * @param switchOn 群旁观开关会是否开启
     */
    @Override
    public void groupObSwitch(String id, boolean switchOn) {
        GroupModel updateModel = new GroupModel();
        updateModel.setGroupId(id);
        updateModel.setObSwitch(switchOn);
        update(updateModel);
    }
}
